﻿<Serializable()> Public Class GebäudeFestung
    Inherits ObjektGebäude
    Public Sub New(ByVal neuSpieler As Integer, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Spielfeld As ObjektSpielfeld)
        MyBase.New("FESTUNG", neuSpieler, neuX, neuY, ObjektSpielfeld.Bodenschlacht)
        GebäudeLaden(True)
        getBildID(Spielfeld)
    End Sub
    Public Sub New(ByVal neuSpieler As Integer, ByVal neuLeben As Integer, ByVal neuBesetzungszahl As Integer, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Feuerzahl As Integer, ByVal Spielfeld As ObjektSpielfeld)
        MyBase.New("FESTUNG", neuSpieler, neuLeben, neuBesetzungszahl, neuX, neuY, Feuerzahl, ObjektSpielfeld.Bodenschlacht)
        GebäudeLaden(False)
        getBildID(Spielfeld)
    End Sub

    Public Sub New()
        MyBase.New("", -1, -1, -1, ObjektSpielfeld.Bodenschlacht)
        Gebäudename = "Festung"
        getFonds = False
        Deckung = 0
        Bestzunge = -1
        Schaden = -1
        Reichweite = -1
        Rechteck.Height = Hauptmenü.Feldbreite * 4
        Rechteck.Width = Hauptmenü.Feldbreite * 4
        Angriff = Angriffe.HQ
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                Leben = 2000
            Case Else
                Leben = -1
        End Select
        Feuerbereite = -1
        Feuerladung = -1
        RotationsZenturm = New Point(Hauptmenü.Feldbreite * 3 / 2, Hauptmenü.Feldbreite * 5 / 2)
        WirdZu = "EBENE+SCHROTT"
        Array.Resize(Variablen, 0)
        Verweisgebäude = New Integer(,) {{-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {-1, 0}, {1, 0}, {2, 0}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {-1, 2}, {-2, 1}, {-2, -2}, {-1, -3}, {2, -3}, {3, -2}, {3, 1}, {2, 2}}
    End Sub

    Private Sub GebäudeLaden(ByVal MitMiniGeschützen As Boolean)
        Gebäudename = "Festung"
        getFonds = False
        Deckung = 0
        Bestzunge = -1
        Schaden = -1
        Reichweite = -1
        Rechteck.Height = Hauptmenü.Feldbreite * 4
        Rechteck.Width = Hauptmenü.Feldbreite * 4
        Angriff = Angriffe.HQ
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                Leben = 2000
            Case Else
                Leben = -1
        End Select
        Feuerbereite = -1
        Feuerladung = -1
        RotationsZenturm = New Point(Hauptmenü.Feldbreite * 3 / 2, Hauptmenü.Feldbreite * 5 / 2)
        WirdZu = "EBENE+SCHROTT"
        Array.Resize(Variablen, 0)
        Verweisgebäude = New Integer(,) {{-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {-1, 0}, {1, 0}, {2, 0}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}}
        For I = 0 To Verweisgebäude.GetLength(0) - 1
            If Not Objektverwalter.Spielfeld Is Nothing Then
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X + Verweisgebäude(I, 0), Rechteck.Y + Verweisgebäude(I, 1), ObjektSpielfeld.Bodenschlacht).Gebäude = New GebäudeVerweis(Spieler, Rechteck.X, Rechteck.Y, ObjektSpielfeld.Bodenschlacht)
            End If
        Next
        If MitMiniGeschützen = True Then
            'Wir erstellen die Minigeschütze der Festung
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 2, Rechteck.Y + 2, ObjektSpielfeld.Bodenschlacht).Gebäude = New GebäudeMinigeschütz_S(Spieler, Rechteck.X + 2, Rechteck.Y + 2, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 1, Rechteck.Y + 2, ObjektSpielfeld.Bodenschlacht).Gebäude = New GebäudeMinigeschütz_S(Spieler, Rechteck.X - 1, Rechteck.Y + 2, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 2, Rechteck.Y + 1, ObjektSpielfeld.Bodenschlacht).Gebäude = New GebäudeMinigeschütz_W(Spieler, Rechteck.X - 2, Rechteck.Y + 1, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 2, Rechteck.Y - 2, ObjektSpielfeld.Bodenschlacht).Gebäude = New GebäudeMinigeschütz_W(Spieler, Rechteck.X - 2, Rechteck.Y - 2, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X - 1, Rechteck.Y - 3, ObjektSpielfeld.Bodenschlacht).Gebäude = New GebäudeMinigeschütz_N(Spieler, Rechteck.X - 1, Rechteck.Y - 3, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 2, Rechteck.Y - 3, ObjektSpielfeld.Bodenschlacht).Gebäude = New GebäudeMinigeschütz_N(Spieler, Rechteck.X + 2, Rechteck.Y - 3, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 3, Rechteck.Y - 2, ObjektSpielfeld.Bodenschlacht).Gebäude = New GebäudeMinigeschütz_O(Spieler, Rechteck.X + 3, Rechteck.Y - 2, Nothing)
            Objektverwalter.Spielfeld.Landschaften(Rechteck.X + 3, Rechteck.Y + 1, ObjektSpielfeld.Bodenschlacht).Gebäude = New GebäudeMinigeschütz_O(Spieler, Rechteck.X + 3, Rechteck.Y + 1, Nothing)
        End If
    End Sub
    Public Overrides Function GetMaxLeben() As Integer
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                If KP > 2000 Then Return KP
                Return 2000
            Case Else
                If KP > -1 Then Return KP
                Return -1
        End Select
    End Function
    Public Overrides Sub Feuer(ByVal X As Integer, ByVal Y As Integer)
        'DO nothing
    End Sub
    Public Overrides Sub FeuerradiusAnzeigen()
        'Do Nothing
    End Sub
    Public Overrides Sub DOSpielFrame()
        'DO nothing
    End Sub
    Public Overrides Function GetLandschaftsuntergrund() As String()
        Return New String() {"EBENE", "SCHNEE", "WÜSTE", "EBENE+SCHROTT"}
    End Function
    Public Overrides Function GetAngriffsFelder() As System.Drawing.Point()
        Return New Point() {}
    End Function
End Class
